package com.heima.es.service;

import com.heima.model.common.dtos.PageResponseResult;
import org.elasticsearch.search.builder.SearchSourceBuilder;

import java.util.List;

public interface EsService<T> {

    /**
     * 创建索引库
     * @param source 参数设置
     * @param indexName 索引库名称
     */
    void createIndex(String source, String indexName);

    /**
     * 索引库是否存在
     * @param indexName 索引库名称
     * @return
     */
    boolean existIndex(String indexName);

    /**
     * 删除索引库
     * @param indexName
     */
    void deleteIndex(String indexName);

    /**
     * 新增数据到ES
     * @param t 数据
     * @param indexName 索引库
     */
    void save(T t, String indexName);

    /**
     * 批量保存数据到索引库
     * @param list
     * @param indexName
     */
    void saveBatch(List<T> list, String indexName);

    /**
     * 根据id删除索引
     * @param indexName
     * @param id
     */
    void deleteById(String indexName, String id);

    /**
     * 根据id查询索引
     * @param id
     * @param tClass
     * @param indexName
     * @return
     */
    T getById(String id, Class<T> tClass, String indexName);

    /**
     * 条件查询
     * @param sourceBuilder 条件对象
     * @param tClass 返回值Class
     * @param indexName 索引库名称
     * @return
     */
    PageResponseResult search(SearchSourceBuilder sourceBuilder, Class<T> tClass, String indexName);
}
